#ifndef ROOM_HH
#define ROOM_HH

#include <vector>
#include "Item.hh"
#include "Character.hh"
/*This header file defines a Room class, representing a room in a game environment. Key features include:

Constructor: Initializes the room with a description.
Content Management:
addItem(Item* item): Adds an item to the room.
addEnemy(Character* enemy): Adds an enemy (character) to the room.
displayContents() const: Displays the contents of the room (items and enemies).
Accessors:
Provides both const and non-const versions of getters for accessing items (getItems()) and enemies (getEnemies()), allowing for both reading and potential modification of the internal vectors.
Navigation:
Pointers (north, south, east, west) to other rooms, enabling navigation within the game world.
Description:
A description string providing details about the room.
Private Members:
Vectors (items, enemies) storing pointers to items and enemies present in the room.
This class facilitates the creation and management of rooms within a game, supporting content addition, navigation, and content display functionalities.*/
class Room {
public:
    Room(std::string desc);

    void addItem(Item* item);
    void addEnemy(Character* enemy);
    void displayContents() const;

    const std::vector<Item*>& getItems () const ;
    const std::vector<Character*>& getEnemies () const ;
    
    std::vector<Item*>& getItems();
    std::vector<Character*>& getEnemies();

    Room* north;
    Room* south;
    Room* east;
    Room* west;

    std::string description;

private:
    std::vector<Item*> items;
    std::vector<Character*> enemies;
};

#endif